Software vendors are continually attempting to enforce and monitor their software licenses. Maintaining and enforcing a software license ensures that a vendor will receive the revenue that it is entitled to for its software product, reasonably ensures the integrity of the software product is not compromised, and reasonably ensures that the intellectual property rights associated with the software product are protected. Vendors invest significant time and effort in managing their software licenses.
At the same time, a vendor cannot be too restrictive or too unreasonable in its attempt to ensure that its license is enforced. In other words, a licensee or a customer will turn toward another product if the conditions and environment associated with a license are unreasonable or impractical for the customer's environment. Consequently, a vendor gives up some control and some piece of mind in order to retain and to attract customers to its software products.
Moreover, in today's highly connected environment customers often desire or insist that licenses be available over a network connection, since the customers' users may be geographically dispersed or networked together when access to a product is needed. Typically, this situation is addressed with a license management service which is installed and executed from a single network node within the customers' environment.
Another reason for having licenses available over a network connection is that users often have to share limited resources of an enterprise over a network. For example, consider a small engineering design company that wants to use an engineering software design package, such as Cadence®. The license for the package can cost several hundred thousand dollars. By purchasing a floating license the company can permit its engineers to access the package over a network connection for purposes of sharing the license, though not at the same time. In this manner, each engineer can have the package available for use but needs the network license to run the package and perhaps only one engineer or a small number of engineers can be executing the package at any point in time. Thus, the limited resource (engineering design package) is managed by a network-installed license, such that the company does not have to purchase the package for all of its engineers.
However, managing a distributed license from a single network node creates a single point of failure and may unduly burden the single network node when it becomes taxed with other network traffic. Moreover, when a node failure occurs manual intervention is needed to bring another different node up for purposes of managing a software license.
It is readily apparent that the conventional approaches to distributed software license management are not optimal and do not create a high availability (HA) response for customers.
Accordingly, improved techniques for distributed license management are needed.